--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit 24055d8c6a75d0772a903f33dc8bd390706ea2e2
Parents : 664a4cb
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-05-30T12:30:57-05:00
refactor(interface-discovery): streamline interface allowlist and blacklist handling by sanitizing patterns before matching
Changes
Diff
diff --git a/meshchatx/meshchat.py b/meshchatx/meshchat.py
index f6f7fdad..3ae35ddc 100644
--- a/meshchatx/meshchat.py
+++ b/meshchatx/meshchat.py
@@ -7031,28 +7031,6 @@ class ReticulumMeshChat:
blacklist_patterns = reticulum_config.get(
"interface_discovery_blacklist",
)
- # Annotate each interface with its allowlist status
- for iface in interfaces:
- iface["is_allowed"] = (
- ReticulumMeshChat.matches_discovery_pattern(
- ReticulumMeshChat.sanitize_discovery_patterns(
- whitelist_patterns
- ),
- iface,
- )
- if whitelist_patterns
- else True
- )
- iface["is_blacklisted"] = (
- ReticulumMeshChat.matches_discovery_pattern(
- ReticulumMeshChat.sanitize_discovery_patterns(
- blacklist_patterns
- ),
- iface,
- )
- if blacklist_patterns
- else False
- )
max_disc = 500
if self.current_context and self.current_context.config:
mv = self.current_context.config.discovered_interfaces_max_return.get()
@@ -7140,15 +7118,35 @@ class ReticulumMeshChat:
to_jsonable(interfaces),
)
)
- filtered_interfaces = ReticulumMeshChat.filter_discovered_interfaces(
- normalized_interfaces,
+ whitelist_sanitized = ReticulumMeshChat.sanitize_discovery_patterns(
whitelist_patterns,
+ )
+ blacklist_sanitized = ReticulumMeshChat.sanitize_discovery_patterns(
blacklist_patterns,
)
+ for iface in normalized_interfaces:
+ if not isinstance(iface, dict):
+ continue
+ iface["is_allowed"] = (
+ ReticulumMeshChat.matches_discovery_pattern(
+ whitelist_sanitized,
+ iface,
+ )
+ if whitelist_patterns
+ else True
+ )
+ iface["is_blacklisted"] = (
+ ReticulumMeshChat.matches_discovery_pattern(
+ blacklist_sanitized,
+ iface,
+ )
+ if blacklist_patterns
+ else False
+ )
return web.json_response(
{
- "interfaces": filtered_interfaces,
+ "interfaces": normalized_interfaces,
"active": to_jsonable(active),
},
)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────